package com.feri.sg.goods.service.impl;

import com.alibaba.fastjson.JSON;
import com.feri.sg.constant.RabbitConfig;
import com.feri.sg.constant.RedisKeyConfig;
import com.feri.sg.goods.domain.Activity;
import com.feri.sg.goods.domain.Sku;
import com.feri.sg.goods.mapper.ActivityMapper;
import com.feri.sg.goods.mapper.SkuMapper;
import com.feri.sg.goods.service.BrandService;
import com.feri.sg.goods.service.SkuService;
import com.feri.sg.pojo.bo.AuditBo;
import com.feri.sg.pojo.bo.GoodsAddBo;
import com.feri.sg.pojo.vo.R;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;

/**
 * ━━━━━━Feri出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　 ┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　  ┃
 * 　　┃　　　　　　 ┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃    邢哥的代码，怎么会，有bug呢，不可能！
 * 　　　　┃　　　┃
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━永无BUG!━━━━━━
 *
 * @Description:
 * @Author：邢朋辉
 * @Date: 2023/6/20 15:17
 */
@Service
public class SkuServiceImpl implements SkuService {
    @Resource
    private SkuMapper mapper;
    @Resource
    private StringRedisTemplate template;
    @Resource
    private RabbitTemplate rabbitTemplate;


    @Override
    public R all() {
        return R.ok(mapper.selectList(null));
    }

    @Override
    public R save(GoodsAddBo bo) {
        //1.校验参数
        if(bo!=null){
            //2.获取秒杀活动  验证活动是否已开始
           if(template.hasKey(RedisKeyConfig.ACTIVITY_TTL+bo.getAid())){
//            if(activity.getBegintime().getTime()>System.currentTimeMillis()){
                //活动未开始，可以添加秒杀商品
                Activity activity= JSON.parseObject(template.opsForHash().get(RedisKeyConfig.ACTIVITYS,bo.getAid()).toString(),Activity.class);
                Sku sku=new Sku();
                BeanUtils.copyProperties(bo,sku);
                sku.setCreateTime(new Date());
                sku.setUpdateTime(new Date());
                sku.setSeckillBegin(activity.getBegintime());
                sku.setSeckillEnd(activity.getEndtime());
                sku.setAudit(0);
                sku.setIsdel(0);
                //3.操作数据库
               if(mapper.insert(sku)>0){
                   return R.ok();
               }
           }else {
                return R.fail("呆子，秒杀活动已经开始啦！");
            }


        }
        return R.fail("亲，新增秒杀商品失败！");
    }

    @Override
    public R audit(AuditBo bo) {
        //1.校验
        if(bo!=null){
            Sku sku=new Sku();
            sku.setId(bo.getId());
            sku.setAudit(bo.getStatus());
            //2.操作数据库
            if(mapper.updateById(sku)>0){
                //3.审核通过
                if(sku.getAudit()==1) {
                    //同步Redis缓存
                    //生成静态页面
                    //考虑到异步的情况，使用RabbitMQ
                    sku = mapper.selectById(bo.getId());
                    rabbitTemplate.convertAndSend(RabbitConfig.MQ_EXCHANGE_GOODS, "", sku);
                }
                return R.ok();
            }
        }
        return R.fail("亲，审核秒杀商品失败！");
    }
}
